With currently available technologies on mobile devices the only way to allow a mobile web application to access native hardware functions requires that a custom-plugin must be developed for the browser that accesses the web application as a client. The main limit related to hitherto existing approaches is that, in order to ensure cross-platform, cross-mobile, cross-operation-system and cross-operation-system compatibility, the browser plugin must be developed for any combination of hardware/operation systems/browsers (examples of hardware: iPhone, Smartphones, mobile devices from Apple (Apple is a trademark of Apple Inc.) or Nokia (Nokia is a trademark of Nokia Corporation) etc./examples of operation systems: Android (Android is a trademark of Google Inc.), iOS etc./examples of browsers: Pocket Internet Explorer, Mobile Firefox (Firefox is a registered trademark of Mozilla Foundation), Opera Mobile (Opera Mobile is a trademark of Opera Software ASA), Dolphin Browser etc. . . . (Dolphin is a trademark of Dolphin Technology Inc.). Thus, the exceedingly high number of combinations of hardware/operation systems/browser plus browser currently available makes this approach unpractical due to the huge amount of effort needed to develop custom-plugins to cover every possible combination.
The hitherto existing standards for browser security policies do not allow cross-domain calls, meaning that the scripts of a web page provided by a server of a first domain trying to send an HTTP request to another domain are blocked and an access denied message is displayed in the browser. Therefore a standard XML http request, issued from a JavaScript code, is denied by the browser, if the browser or script specifies another domain address, including ‘local host’.
Moreover, another important constraint of hitherto existing approaches is that iFrame cross-domain calls can only send client-to-server requests, but cannot handle any responses.
Consequently, the communication supported by existing approaches for mobile devices is only unidirectional.